Method and apparatus for coherent detection in a telecommunications system

ABSTRACT

A method of channel estimation in a Code Division Multiple Access (CDMA) transmission system that incorporates Pilot Symbol Assisted Modulation (PSAM) using an iterative coherent detection method to estimate the phase and frequency of the received pilot symbols. Arctangent calculations are used to estimate phase and frequency. An iterative least squares linearization identifies and corrects values of the arctangent associated with an incorrect 2π alias, which arise due to the multiple-valued nature of the arctangent function. An alternative non-iterative least squares linearization also corrects the arctangent values, based on a calculation involving stored values of the pilot symbols.

FIELD OF THE INVENTION

The present invention relates to telecommunication, and specifically to methods of coherent detection in Code Division Multiple Access (CDMA) transmission systems.

BACKGROUND OF THE INVENTION

In telecommunication systems, typically a transceiver sends a signal having a predetermined frequency and phase. When represented in the complex plane, the signal is a phasor having both phase angle and frequency. The phasor rotates around the axis with time. During transmission the signal is corrupted by several factors, such as transmission through a noisy channel, and interference from other users, etc.

Upon receiving the corrupted signal, the receiver must then extract the original information. This process may involve any number of steps, where the signal is manipulated both in phase and frequency. The process of estimating the true phase and frequency of the corrupted signal is referred to as channel estimation. Channel estimation has two (2) basic classes: coherent and non-coherent.

Non-coherent estimation estimates the signal without determining the phase angle θ. It tends to be less costly, but offers poor performance compared to the coherent method.

In contrast, coherent estimation requires estimates of both phase angle, θ, and frequency offset. These methods offer good performance, where the bit error probability is low compared to the non-coherent methods, but tend to be more costly.

Because of technological advancements, communication channels are being designed to transmit more and more data. For instance, wireless systems are being designed which accommodate the transmission of computational data, so that internet browsing or computer networking will be possible via a wireless connection. A need exists therefore for a quicker and more accurate method of channel estimation consistent with new technologies of transmission.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention may be more fully understood by a description of certain preferred embodiments in conjunction with the attached drawings in which:

FIG. 1 illustrates, in block diagram form, a prior art communication system having a channel estimator.

FIG. 2 illustrates, in block diagram from, a channel estimator based on a least squares linear estimation in accordance with one embodiment of the present invention.

FIG. 3 illustrates, in flow diagram form, an iterative algorithm for estimating signal characteristics in accordance with one embodiment of the present invention.

FIG. 4 illustrates, in flow diagram form, a non-iterative method for calculating the phase and frequency of a transmitted signal in accordance with one embodiment of the present invention.

FIG. 5 illustrates, in flow diagram form, a non-iterative method for calculating the phase and frequency of a transmitted signal in accordance with one embodiment of the present invention.

FIG. 6 illustrates, in block diagram and logic diagram form, a circuit for performing an iterative method for calculating the phase and frequency of a transmitted signal in accordance with one embodiment of the present invention.

FIG. 7 illustrates, in block diagram and logic diagram form, a circuit for performing a non-iterative method for calculating the frequency of a transmitted signal in accordance with one embodiment of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

For clarity the terms assertion and negation are used herein to avoid confusion regarding “active-low” and “active-high” signals. The term assert or assertion is used to indicate that a signal is active or true, independent of whether that level is represented by a high or a low voltage. Negate or negation is used to indicate that a signal is inactive or false.

The present invention provides an iterative coherent channel estimation method that makes an estimate of the phase and frequency of the received signal, compares the estimate to the received signal, and minimizes the sum of squared deviation of data points from their trend.

According to one aspect of the present invention, a method for providing phase correction information and frequency correction information for an information signal having digital information, having pilot information, and modulating a carrier signal, includes the steps of processing the information signal to obtain a plurality of pilot symbols in complex base band coordinates representative of the pilot information; taking the complex arguments of the pilot symbols using the arctangent function; and using linear least squares of the complex arguments to obtain the frequency correction information and the phase correction information.

In one embodiment of the present invention, a method of obtaining an estimate of digital information contained in an input signal having pilot information and attached to a carrier signal, includes the steps of processing the information signal to obtain a plurality of pilot symbols in complex base band coordinates representative of the pilot information; taking the complex arguments of the pilot symbols using the arctangent function; using linear least squares methodology applied to the complex arguments to obtain the frequency correction information and the phase correction information; and using the phase correction information and frequency correction information to obtain an estimate of the digital information.

According to another aspect of the present invention, an integrated circuit which obtains an estimate of digital information contained in an input signal having pilot information and attached to a carrier signal with a frequency offset and a phase error, includes a downconverter which removes the carrier from the input signal, a demultiplexer, coupled to the downconverter, which separates pilot information from the digital information and converts the pilot information to pilot symbols in complex baseband coordinates, a memory circuit, coupled to the demultiplexer. The memory circuit stores digital information. The integrated circuit further includes a trigonometric function means, coupled to the demultiplexer, for obtaining the complex arguments of the pilot symbols; a predictor-corrector, coupled to the trigonometric means, which provides the frequency correction information and the phase correction information using the complex arguments; and a complex mixer, coupled to the predictor-corrector and the memory circuit, having an output which provides an estimate of the digital information.

FIG. 1 illustrates a prior art communication system having a transmitter 2 and a receiver 4. The transmitter 2 generates the data to be transmitted in data generator 6. The transmitter 2 may be any module used to send information, including voice and data, such as a mobile telephone or a base station.

In a Code Division Multiple Access (CDMA) based system, bits are added to the information to correct for changes in the signal once transmitted. In one scheme these bits are referred to as “pilot bits.” The pilot bits provide known data to the receiver 4, and are used to correct phase shifts and frequency offsets seen at the receiver 4. Systems incorporating pilot bits are referred to as Pilot Symbol Assisted Modulation (PSAM) systems. In CDMA systems, data is usually divided into “packets” or “frames” of specified duration. A set of pilot bits is generated for each packet or frame of data. The transmitter 2 generates the pilot bits in pilot generator 8 and “spreads” the pilot bits with an assigned channel pilot spreading code, Cp. The pilot spreading code consists of consecutively-generated bits, and each pilot spreading code bit occupies a duration which is a fixed integer fraction of the pilot bit duration. The number of spreading code bits which occupies the same duration as a single pilot code bit is an integer called the “spreading factor”. The spreading of the pilot code is accomplished by multiplying each bit of Cp by the contemporaneous pilot bit. This multiplication is accomplished by the multiplier 10. The result of this spreading contains the same number of bits as the pilot code, but the spread code bits agree or differ with the corresponding pilot code bit depending on whether the contemporaneous pilot bit conveys assertion or negation, respectively. The transmitter 2 also assigns a code to the corresponding data, the channel data spreading code, Cd. The assigned Cd “spreads” the data bits in similar fashion by multiplier 12, where Cd is multiplied with the data.

The CDMA transmissions provide both the pilot bits and the data on one physical channel. The transmitter 2 manipulates the coded data information at multiplier 14 by multiplying with a sinusoidal signal, given as: sin(ωt+ω_(δ)t) Here ω is the frequency of transmission, and ω_(δ) is the frequency offset.

Similarly, the transmitter 2 manipulates the coded pilot bits at multiplier 16 by multiplying with a sinusoidal signal, given as: cos(ωt+ω_(δ)t) Again, ω is the frequency of transmission, and _(δ) is the frequency offset.

The two are then added at summation 18, the result of which is output to the transmission channel. Note that while the transmission channel is often the air, it may be any physical channel for transmitting communication information. As illustrated in FIG. 1, the signal is transmitted from antenna 20.

The receiver 4 receives the transmitted signal via antenna 22. At point A, the received signal is described as: C_(p) cos(ωt+ω_(δ)t+θ)+C_(d) sin(ωt+ω_(δ)t+θ)+noise

From point A the multiplier 24 multiplies the signal with the sinusoidal signal cos(ωt), and the multiplier 26 multiplies the signal by the sinusoidal signal sin(ωt) At point B, the results of these multiplications are represented as: ½C _(p) cos(ω_(δ) t+θ)+½C _(d) sin(ω_(δ) t+θ)+<high frequ.signal>+noise for the upper path, and ½C _(d) cos(ω_(δ) t+θ)−½C _(p) sin(ω_(δ) t+θ)+<high frequ.signal>+noise for the lower path. Note that the carrier frequency ω has been eliminated from the low-frequency components of these two signals. Low pass filter (LPF 28) and low pass filter (LPF 30) are used to remove the high frequency components of these two signals. It is mathematically convenient to denote the resulting two signals as a single complex signal. The upper signal is assigned to the real part, and the lower signal is assigned to the imaginary part. By applying Euler's identity e ^(jωt)=cos ωt+j sin ωt the complex signal which represents the upper and lower path signals at point B′ is rewritten as ½C_(p)e^(jω) ^(δ) ^(t+tθ−j/)2C_(d)e^(jω) ^(δ) ^(t+θ)+noise Note that the carrier frequency has been removed. The output of the LPF 30 is provided to C_(p) multiplier 32 and to C_(d) multiplier 34. The output of the LPF 28 is provided to C_(p) multiplier 36 and C_(d) multiplier 38. Here the pilot code and data code are each multiplied with the signal. The outputs of multipliers 28 and 32 at stage B′ can be represented mathematically as a single complex signal ½C_(p) ²e^(jω) ^(δ) ^(t+θ)−j/2C_(p)C_(d)e^(jω) ^(δ) ^(t+θ)+noise The output of the Cp multiplier 32 is provided to an accumulator 40, and the output of Cp multiplier 36 is provided to an accumulator 42. The accumulator 40 and the accumulator 42 sum together the signals received over a predetermined duration T, so that at the end of each time interval of length T accumulator 40 and the accumulator 42 output signals which represent the accumulation of the input signals received during that time interval to a channel estimation unit 44. The spreading codes Cp and Cd are chosen to be different “pseudorandom” sequences, which have the property that an accumulation of the product of Cp and Cd will have negligible value compared to an accumulation of the product of Cp and Cp (Cp²), due to the partial cancellation of positive and negative signals. Hence the input to the channel estimation unit 44 can be represented as A·e^(jω) ^(δ) ^(t+θ)+error, where the size of the error depends on the length of the accumulation period T.

Each complex output of accumulator 40 and accumulator 42 is termed a “pilot symbol”. As illustrated in FIG. 1, the pilot symbols and the data are processed on separate paths. The pilot symbols are processed by the channel estimation unit 44. The channel estimation unit 44 estimates the phase shift and frequency shift of the received signal as compared to the reference frequency ω of the receiver. This comparison and estimation is based on the pilot symbols. The channel estimation unit 44 provides two outputs. A first output is provided to multiplier 46. At point C, this first output is represented as: cos({overscore (ω)}_(δ)t+{overscore (θ)})+noise where {overscore (ω)}_(δ) is the estimate of ω_(δ), and {overscore (θ)} is the estimate of θ. The channel estimation unit 44 provides a second output to multiplier 48. At point D, this second output is represented as: sin({overscore (ω)}_(δ)t+{overscore (θ)})+noise where {overscore (ω)}_(δ) is the estimate of ω_(δ), and {overscore (θ)} is the estimate of θ. The multiplier 46 multiplies the first output of the channel estimation unit 44 with the output of the Cd multiplier 38. The multiplier 48 multiplies the second output of the channel estimation unit 44 with the output of the Cp multiplier 36. At point E the resultant signals reflect ω=0, θ=0.

Several problems are introduced into the transmitted signal as generated in FIG. 1. As discussed hereinabove, the signal may be represented in the complex plane as a phasor. The phasor rotates with time and so the phasor rotates during transmission. When received there is almost always a phase shift. It is then necessary to determine the phase shift, and thus restore the phase of the original signal. Further, where the transmitter 2 and/or receiver 4 are mobile, there is a speed difference between transmitter 2 and receiver 4. Even speeds commonly encountered during walking or driving are sufficient to introduce a condition referred to as fading. When a signal fades, a frequency offset is introduced due to the speed difference.

Additionally, the phasor rotates in the complex plane with noise and other interference, include background noise as well as interference of other users. The purpose of the channel estimation unit 44 is to estimate the rate of rotation of the phasor and where it is in the complex plane, i.e. the frequency offset and/or the phase shift. The calculation is non-linear, presenting a problem with prior art estimation techniques where a linear estimate is made.

The present invention provides a method of estimating the phase shift and frequency offset using a least squares approximation. As the phasor is described in the complex plane as having a magnitude and a phase angle, the least squares estimation scheme of the present invention uses the arctangent of the phase angle over time to convert the phasor into angle data which will have a linear trend.

The arctangent function is not single valued, but rather has an infinite multiplicity of values with constant spacing 2π between adjacent values. In order to choose the arctangent value which is most closely aligned to a linear trend, the present invention compares an estimate (which is calculated on the basis of previous data) to the actual data and uses this information to make the next estimate. The interpolation and estimate may be done using a least squares approach. The channel estimation unit 44 is used to estimate both the phase shift and the frequency offset.

The present invention provides a method of channel estimation that considers the complex representation of the pilot symbols. Within each period of channel estimation a predetermined number of pilot symbols are received. The method uses a linear representation of the arctangent of each of the pilot symbols to determine the proper correction to make to the data. Each pilot symbol arctangent is corrected to the linear fit. The received pilot symbols may be represented as: I(n)+j·Q(n)=r·exp[j·(nωt+θ)]+eI(n)+j·eQ(n), n=1. . . N and the arctangent of the data is then: X_(n)≡arctan(Q(n)/I(n))

If no noise is present, the frequency of transmission, ω, and the phase angle, θ, can be recovered from the slope and intercept of the fitted data, respectively.

The present invention uses an iterative set of equations for computing frequency and phase updates for all N data points, which are based on an iterative version of the mathematical equations for the least-squares linear fit to a set of noisy data. The basic equations are given as: m₂≡0 χ₂X₁ m_(n+1) =m _(n)+(X_(n)−χ_(n))·6·{(n)·(n+1)})⁻¹ , n=2,3, . . . N, χ_(n+1)=χ_(n) +m _(n+1)+(X _(n)−χ_(n))·{(n)·(n+1)}⁻·(4n−2), n=2,3, . . . ,N, where, m_(n+1) is the slope of the linear fit to n data points, X_(n) is the n^(th) data point which is the arctangent of the n^(th) pilot symbol, χ_(n) is an estimate of the n^(th) data point X_(n), and n is the pilot symbol index and takes values from 1, 2, . . . N. These equations allow estimation of successive data points. At each time n we have available a prediction χ_(n) for X_(n) based on the previous n points X₁, . . . X_(n−1).

Note that the arctangent introduces an ambiguity of ±2kπ (k=1,2,3, . . . ) in the value of X_(n), that can have drastic consequences for a least-squares fit as the wrong value of X_(n) may be chosen. If the wrong points are chosen, the resultant slope may be opposite to the correct linear slope. To address this 2π alias problem, we assume that the correct 2π-alias of X_(n) is the one which is nearest to χ_(n). This assumption may fail in very noisy environments, but fortunately, even in extremely noisy situations the algorithm is self-correcting to a certain extent, for even if a wrong choice of alias is made, subsequent choices will tend to still be correct and will steer the algorithm back to a more accurate estimate. In practice, in order to keep the data values within the arctangent range of {(−π to π}, the method adjusts the value of χ_(n) rather than X_(n), as follows: If X _(n)−χ_(n)>π, then χ_(n)→χ_(n)χ_(n)+2π; If X _(n)−χ_(n)<−π, then χ_(n)→χ_(n)−2π.

This new value for χ_(n) is then used in the estimate for m_(n+1); and the process is iterated. The final value m_(N+1) is used to estimate the phase error and frequency drift of the signal over the entire frame: the estimated frequency drift ω=m_(N)/T. The estimated phase error may be obtained from χ_(N+1) which estimates the phase error a time T after the last data value X_(n). Note that a tighter estimate on m_(max) yields better performance, so m_(max) should be set as close as possible to the maximum slope which will be encountered by the system.

If the calculated estimate of m_(n+1) is greater in magnitude than m_(max) (this is particularly common when n=0) and it has been determined on physical grounds that the slope cannot be larger than m_(max), estimates for m_(n+1) and χ_(n+1) are adjusted accordingly. With the slope constrained to be less than m_(max), the best linear fit to the given data X₁, . . . X_(n) should pass through the centroid of the data, and have slope m_(max) multiplied by the sign of m_(n+1). If the data is assigned coordinates,[1,X₁], . . . [n,X_(n)], then the centroid will have coordinates [(n+1)/2, X*], where X* is the average of X₁, . . . ,X_(n). It follows from least squares theory that the least-squares fit always passes through the data centroid. Since the least-squares fit for the n data points has slope m_(n+1) and passes through [n+1, χ_(n+1)], therefore the coordinates of the centroid are: [(n+1)/2, χ_(n+1)−m_(n+1)·(n+1)/2]. The slope limitation requirement |m| <m_(max) thus leads to the following revised estimates for m_(n+1) and χ_(n+1): χ_(n+1)→χ_(n+1)+(m _(max)·sign(m_(n+1))−m_(n+1))·(n+1)/2 m_(n+1)→m _(max)·sign(m_(n+1)).

As to storage requirements, note that the computation of m_(n+1) and χ_(n+1) requires only the immediately preceding values for slope and phase (m_(n) and χ_(n)) and not other previous values. Hence at any point in the algorithm, it is only necessary to store two values.

In some applications, a continuing stream of data is received where the phase variation is not strictly linear, but may be approximated as linear over the time interval spanned by N′ data points. The iterative method characterized hereinabove may still be used in this case, with slight modification. Since the data is only linear over an interval spanned by N′ data points, n is not allowed to increase indefinitely. Rather, replace n with N′-1. This guarantees that the previous N′-1 points are used to determine the best phase and frequency estimate for the current data point. An alternative embodiment is described hereinbelow for the case of non-iterative slope estimates.

FIG. 2 replaces the channel estimation unit 44 with a channel estimator 50 according to one embodiment of the present invention. As in FIG. 1, an in-phase input (1) and a quadrature-phase input (Q) are provided to channel estimator 50. The channel estimator 50 calculates an estimate of the arctangent of the phase angle, θ, and makes a linear fit with previous data. The channel estimator 50 then calculates the slope, m, of the least squares fit including the estimated point. The actual data is compared to the estimate. The estimate and the slope are updated based on the preceding values. The channel estimator 50 also calculates an estimate of the frequency offset, ω_(δ). These estimates are provided to a cosine and sine generator 52 that outputs cos(ω_(δ)τ+θ) and sin(ω_(δ)t+θ). The frequency offset, ω_(δ) is equal to the slope estimate, m_(est), divided by τ, where τ is the time between data point sampling times.

The channel estimation performed by channel estimator 50 may be performed in software or in hardware. The flow of the method is illustrated in FIG. 3, where the process begins with initialization at block 54. Initialization includes reading I₁ and Q₁, calculating _(χ) ₂ , where _(χ) ₂ =arctan(Q₁/I₁), and setting m₂=0. The index, n, is set equal to 2 at block 56. It is then determined if n is greater than N at decision diamond 58, where N is the total number of data points. Note that even for continuous data a predetermined number of data points are selected for each estimation. In a communication system where data is packetized and transmitted in packets, the number of data points is determined by the packet size.

If n is not greater than N, process flow continues to block 60 to read I_(n) and Q_(n) information, where I_(n) information relates to in-phase data and Q_(n) information relates to quadrature-phase data. Specifically I_(n) is the real portion of the received signal and Q_(n) is the imaginary portion of the nth received data point. The arctangent of Q_(n)/I_(n) is calculated at block 62 and assigned to variable X_(n). Processing then continues to decision diamond 64 to determine if the absolute value of the difference between the data point X_(n) and _(χn) is greater than π. If the difference is greater than π then processing continues to block 66 where an intermediate variable is defined as _(χalias)=_(χn)+2(sign(Xn−_(χn))).

If the difference is not greater than π then processing continues to block 68 where the intermediate variable is defined as _(χalias)=_(χn). From both block 66 and block 68 processing continues to block 70 to calculate various variables. Here, another intermediate variable, “DELTA,” is calculated as DELTA=[(Xn− _(χalias))/n]/(n+1). From this calculation, a slope estimate, m₀, is calculated as: m ₀ =m _(n)+6DELTA

-   -   and data estimate:         _(χ) ₀ =_(χalias) +m ₀+(4n−2)DELTA

Continuing to decision diamond 72 to determine if the absolute value of m₀ is greater than a predetermined maximum value m_(max). This maintains the estimated slope within a predetermined range. The predetermined range improves the estimates _(χN). The improvements are particularly significant when m_(max) is small. A tighter estimate on m_(max) yields ever better performance.

If the value of m_(n) is greater in magnitude than m_(max), and it is defined that the slope cannot be larger than m_(max), the estimates for m_(n+1) and _(χn+1) are adjusted accordingly. With the slope constrained to be less than m_(max), the best linear fit to the given data X₁, . . . X_(n), with 2π aliases chosen as specified by X₁ ±2k₁π, . . . X_(n)±2k_(n)π, should pass through the centroid of the data, and have slope m_(max)*sign(m_(n)+1). If the data is assigned coordinates [1,X₁], [2,X₂], . . . [n,X_(n)], then the centroid will have coordinates [(n+1)/2, X*], where X* is the average of X₁, . . . ,X_(n). It follows from least squares theory that the least-squares fit always passes through the data centroid. Since the least-squares fit passes for the n data points has slope m,+, and passes through [n+1, χ_(n+1)], therefore the coordinates of the centroid are given as: [(n+1)/2, _(χn+1) −m _(n+1)*(N+1−(N+1)/2)]. =[(n+1)/2, χ_(n+1) −m _(n+1)·(N+1)/2].

The estimates are revised based on the slope limitation requirement |m|<m_(max), and the requirement that the fitted line pass through the data centroid.

This greatly reduces the storage requirements of the present invention during processing, as the computation of m_(n+1), and _(χn+1) requires only the immediately preceding values for slope and phase (m_(n) and _(χn)), and not other previous values. Hence at any point in the algorithm, it is only necessary to store two values.

Returning to FIG. 3, if the estimated slope exceeds the maximum value, the next estimated slope. i.e. next iterated value for n+1, is calculated as provided in block 74. Here, the next estimates are returned to an initial value, where: m _(n+1) =m ₀; _(χ) _(n+1) =_(χ) ₀ .

If the estimated slope is within the allowable range of values, the next estimated slope is calculated as in block 76. This calculation provides the following values: m _(n+1)=sign(m ₀)*m _(max); _(χ) _(n+1) =_(χ) ₀ +(m _(n+1) −m ₀)*(n+1)/2.

After the estimates corresponding to subscript n+1 are calculated, the variable n is incremented at block 78. Processing then returns to decision diamond 58 for the calculation of the next estimate. Note that the n+1 estimates calculated on the last iteration are then compared to the actual data received. Iterations continue until n exceeds N, at which point n is equal to N+1 and an estimated phase, θ_(est), and slope estimate are calculated as provided in block 80, where: θ_(est)=_(χ) _(N+1) −N*m _(N+1;) m _(est) =m _(N+1).

The present invention provides a method of estimating the channel values that simplifies the mathematical task of such estimations. The present invention provides a method of determining optimal values of (k₁, . . . , k_(N′)), where the optimal values provide a best least-squares fit to the data points X₁±2k₁, π, X_(N)±2k_(N)π. The method of the present invention is more accurate than prior art methods that do not use least squares as it provides tighter estimates of phase and frequency offset.

The present invention further provides such estimation in a fast and computationally efficient manner, requiring only the evaluation of arctangents, conditionals, and arithmetic operations. Memory requirements are also minimal, where only the current best slope and phase estimate must be stored. The method may be performed in “real time,” that is, it continually supplies the user with a current best estimate for phase and frequency, based on the data which has already been received. Each time new data is received, additive correction terms to the estimates are computed, and the estimates are updated. The method can be used where a continuing stream of data is provided, and where the phase variation is not strictly linear, but may be approximated as linear over the time interval spanned by N data points.

The iterative method specified above gives us a reasonable way for estimating the correct 2π alias of each successive data point. Recall that at each time n, there is an available prediction _(χn) for X_(n) based on the previous n−1 points X₁, . . . , X_(n−1). It makes sense to expect that the correct 2π-alias of X_(n) is the one which is nearest to _(χn). While this assumption may not extend to some specific noisy environments, in practice even in extremely noisy situations the algorithm is self-correcting to a certain extent. Even if a wrong choice of alias is made, this usually has a small enough effect on the predictions for subsequent data points that correct aliases are chosen for the subsequent points. This has the effect of steering the estimates back towards the correct values. To keep the data values within the arctangent range of −π to π, it is possible to adjust the value of _(χn) rather than X_(n).

One software embodiment of the present invention as illustrated in the flow diagram of FIG. 3 is illustrated in the following program implemented with mathematical software Matlab, Matlab is a trademark of The MathWorks, Inc. and is commercially available from The MathWorks, Inc., 24 Prime Park Way, Natick, Mass. 01760-1500.

%%% Least-squares method: %%% X = angle(Measured_data); % Get angle vals from complex data %%% Initialize %%% Chi = X(1); M = 0; % %% Iteration %%% for n = 2:1:N %%% resolve 2*pi ambiquity %%% if abs(X(n) − Chi) > pi Chi = Chi + 2*pi*sign(X(n) − Chi); end %%% Compute slope & phase updates %%% delta = (X(n) − Chi) / n / (n+1); M = M + delta*6; % update slope estimate Chi = Chi + M + delta*(4*n − 2);% update angle estimate if abs(M) > m_max% Correct if slope estimate is too large M1 = sign(M)*m_max; Chi = Chi + (M1 − M)*(n + 1)/2; M = M1; end end

FIGS. 4-5 illustrate alternate embodiments of the present invention that are non-iterative least-squares algorithms for slope estimation. Unlike the iterative algorithm, these algorithms are not amenable to continual update, and require storage of all data points. However, these alternative embodiments have the advantage of being more highly parallelizable, and thus may work faster on some platforms.

FIG. 4 illustrates one embodiment of the present invention where the number of data points, N, is even. The process begins at block 82 by reading the in-phase data points I(1) through I(N) and the quadrature-phase data points Q(1) through Q(N). The data consist of the real and imaginary parts of the pilot symbols. The arctangent of each pair of data points is calculated as arctan[Q(n)/I(n)] at block 84. A preliminary slope estimate m_(prelim) is calculated in block 86, according to the equation illustrated. Processing continues to block 88, to calculate variables Y(k), k=1, . . . , N/2, which represent values having a linear trend with intercept 0 and slope m·m_(prelim). These values are passed to block 90 where variables Z(k) are calculated, k=1, . . . , N/2, which represent values having a linear trend with intercept 0 and slope (m·m_(prelim)), and with corrections made for the 2π-alias ambiguity. A correction to the slope estimate m_(prelim) is made in block 92 based on the variables Z(k), and added to m_(prelim). Additionally, an intermediate variable W is calculated at block 94, which represents an estimate of the mean value. This mean value is passed to block 96 where an intermediate value Δ₁ is calculated, which represents the sum of absolute deviations of the data X₁, . . . , X_(N) from the fitted line with slope m and mean W. A decision is then made at decision diamond 98 based on the intermediate variable calculated above, to determine which mean value will be used for this estimate. The mathematical derivation of the mean estimate indicates that there is an ambiguity of π in the estimate, and the criterion in decision diamond 98 is used to resolve this ambiguity, based on a minimum deviation criterion. The mean is set to W in block 100 indicating that the choice of mean equal to W minimizes the deviations of the data from the linear fit. The mean is set to W−π in block 102, indicating that the choice of mean equal to W−π minimizes the deviations of the data from the linear fit.

One embodiment of the algorithm described in FIG. 4 is provided as a Matlab program. In the following code the number of data points, N, is equal to eight (8). Only the frequency estimate is provided in this example:

X = angle(Measured_data); % Create angle data Steps = X(2:1:8) − X(1:1:7); Aliased_steps = mod(Steps + pi,2*pi) − pi; % 2*pi aliasing m_prelim = (sum(Aliased_steps) − max(Aliased_steps) − . . . min(Aliased_steps)) / 5;%Throw out outliers &avg Y = (X(5:1:8) − X(4:−1:1)) − m_prelim*(1:2:7); %De-trend vals Y = mod(Y+pi,2*pi)−pi; % 2*pi aliasing m_final = m_prelim + Y*(1:2:7)′/84.

FIG. 5 illustrates another embodiment of the present invention where the number of data points, N, is odd. Again the process begins by reading data points I(1) through I(N) and Q(1) through Q(N) at block 104. Processing continues to block 106 to calculate the arctangent of Q(n)/I(n) for n from 1 to N. A preliminary slope estimate is calculated at block 108, and intermediate variables, Y(k) and Z(k) at block 110 and block 112, respectively which serve a similar purpose as the Y(k) and Z(k) in block 88 and block 90, of FIG. 4, for the case where N is even. The estimate of slope is updated at block 114. Intermediate variables W and Δ₁ are further calculated at block 116 and block 118 respectively, which serve a similar purpose as the W and Δ₁ in block 92 and block 94, of FIG. 4, for the case where N is even.

The intermediate variable, ^(Δ)1 is evaluated at decision diamond 120 to determine the mean value. At block 122 the mean value is set to intermediate variable W. At block 124 the mean value is set to W−π to correct for alias in the estimate.

FIG. 6 illustrates a hardware embodiment for implementing the method of FIG. 3 starting at decision diamond 64. The hardware embodiment requires that the arctangent values computed in block 62 be scaled so that the values range, not from −π to π, but rather from −2^(B to) 2^(B)−1, where B+1 is the number of bits allocated to store the value of X_(n) in decision diamond 64. A counter 126 is used to generate address information to a random access memory (RAM) storing a look-up table (LUT). The RAM 128 stores the corresponding factor based on the iteration number. For example, in one embodiment of the present invention, if the iteration number is “n,” the corresponding factor is 1/((n+1)*n).

The predicted value, _(χn), is subtracted from the received pilot symbol, X(n), at a node 130. This effectively performs the calculation depending on the difference of X_(n) and _(χn). At node 140 the resultant difference is multiplied by the pilot symbol from RAM 128. The product of the node 140 is the variable DELTA of block 70. DELTA is multiplied by a constant value at node 142 and the result is summed with the value m_(n) at node 144 to form m₀, as in block 70. DELTA is also supplied to the path through node 146, node 148, and node 150. The other input to node 146 is from circuit 152, providing the (4n−2), of the formula illustrated in block 70 of FIG. 3. The product of node 146 is input to node 148 to be summed with m₀ from node 144. The sum of node 148 is then provided to node 150 to be summed with χ_(n). The sum of node 150 is the value χ₀, which is supplied to MUX 154.

Continuing with FIG. 6, a value of m_(max) and its negative are provided to MUX 156. A control signal is provided by the sign(m₀) to select a maximum value accordingly. The output of MUX 156 is provided as input to MUX 158, and also to node 160. A second input to MUX 158, m₀, is provided from node 144. The value ma is also provided to node 162 which takes the absolute value and provides it to node 164 where it is compared to m_(max). The output of node 164 is used to control both MUX 158 and MUX 154 to make the decision of decision diamond 72 of FIG. 3.

The output of MUX 158 is stored in storage node 166 to generate the value m_(n+1), as illustrated in block 74 and/or block 76 of FIG. 3. In one embodiment storage node 166 is a flip-flop circuit. The output of MUX 158 is the estimated slope for this iteration. The next iteration uses the output of MUX 158 as the m_(n) input to node 144.

The value m₀ is also provided to node 160 where it is subtracted from the output of MUX 156. The output of node 160 is provided to node 168 to multiply with a value stored in RAM 170 that stores a second LUT. The value stored in RAM 170 is also a function of the iteration number, where in one embodiment the value is defined for iteration n as ((n+1)/2). The product of node 168 is provided to node 172, where it is summed with the output of node 150, _(χ0). The output of node 172 is provided to MUX 154. The MUX 154 outputs the estimated phase value, _(χn), to a storage node 174. The estimated phase value is as described in block 74 and block 76 of FIG. 3. In one embodiment, storage node 174 is a flip-flop circuit.

The iterative method illustrated in FIGS. 3 and 6 calculates an estimated phase and frequency for each iteration, i.e. each pilot symbol. An alternate non-iterative method may be used to calculate the estimated phase, as illustrated in FIG. 4. FIG. 7 illustrates a hardware implementation of the non-iterative method according to one embodiment of the present invention.

For clarity, the operation of the circuit of FIG. 7 is illustrated in the following example, where the estimates are based on eight (8) pilot symbols. The implementation begins at block 86 of FIG. 4. A delay element 176 and a subtractor 178 are used to compute the difference between successive terms of the sequence of phases X(n). An adder 180 and delay element 182 compute the summation of the sequence of differences. This summation serves as the input to the scaler 184. After the sequence of phases X(n) has been read in, the output of the scaler 184 will be the quantity m_(prelim).

Note that as the sequence of phases X(n) is being read into the differentiator formed by delay element 176 and subtractor 178, it is also being read into the delay chain formed by delay element 186, delay element 188, delay element 190, delay element 192, delay element 194, delay element 196, and delay element 198. The delay element 198 holds the earliest phase estimate, while the input to delay element 186 is the most recent phase estimate.

The output of scaler 184 is scaled by two in right shift element 208. The output of 208 is further scaled by a factor of two (2) in right shift element 210, the output of which is finally scaled by another factor of two (2) in right shift element 212. Thus the output of 208 represents 2* more, the output of right shift element 210 represents 4* m_(prelim), and the output of right shift element 212 represents 8* m_(prelim).

The sequence of phases X(n) is also provided to the series of subtractors formed by subtractor 200, subtractor 202, subtractor 204, and subtractor 206 are used to form four differences between symmetric terms of the phase sequence X(n). The differences are labeled as Y(k), k=0, . . . , 3.

2* m_(prelim) and 4* m_(prelim) are added to m_(prelim) in adder 214 and adder 216, respectively. The value m_(prelim) is subtracted from 8*m_(prelim) in subtractor 218. Thus, adder 220 forms the summation of Y(3) and m_(prelim). The adder 222 forms the summation of 3*m_(prelim) and Y(2). The adder 224 forms the summation of 5*m_(prelim) and Y(1). Finally, adder 226 forms the summation of 7*m_(prelim) and Y(0). The resulting summations are labeled Z(k), k=0, . . . ,3. Z(0), Z(1), Z(2), and Z(3) are scaled by the theoretical scale factors in the scaler 228, scaler 230, scaler 232, and scaler 234. These four scaled values are summed at summing junction 236. The output of summing junction 236 is added to 8*m_(prelim) by adder 238. The result is the desired frequency estimate m.

The estimated values found from the pilot symbols of each method are used to adjust the data. By understanding the adjustment necessary to transform the received pilot symbols into the expected pilot symbols, the receiver is prepared to adjust the received data in the same way.

The present invention provides a method of channel estimation in a CDMA transmission system that incorporates pilot symbol assisted modulation (PSAM). An iterative method estimates the phase and frequency of the received pilot symbols eliminating the errors introduced during transmission. Similarly, a non-iterative method estimates the frequency. The present invention translates from the complex domain of 1 and Q to the angular domain by using the arctangent information. The arctangent calculations are used to make the estimations of phase and frequency.

The present invention provides a coherent detection method that improves the accuracy of channel estimation by overcoming the 2π alias problem associated with calculation involving the arctangent. The method uses an iterative least squares linearization to identify and correct values outside of the arctangent range.

Those skilled in the art will recognize that modifications and variations can be made without departing from the spirit of the invention. Therefore, it is intended that this invention encompass all such variations and modifications as fall within the scope of the appended claims. 

1. A method of obtaining an estimate of digital information contained in an input signal having pilot information and attached to a carrier signal, comprising the steps of: processing the input signal to obtain a plurality of pilot symbols in complex base band coordinates representative of the pilot information; obtaining complex arguments of the pilot symbols using an arctangent function; using linear least squares methodology applied to the complex arguments to obtain frequency correction information and phase correction information; using the phase correction information and frequency correction information to obtain the estimate of the digital information; wherein the pilot symbols include noise and wherein the step of using linear least squares further comprises: using predictor-corrector methodology to obtain estimated complex arguments of the pilot symbols without the noise, wherein each estimated complex argument corresponds to a complex argument; wherein the step of using linear squares further comprises arranging the plurality of complex arguments in sequential order; wherein the step of using predictor-corrector methodology further comprises sequentially obtaining each estimated complex argument; and wherein the step of using predictor-corrector methodology further comprises comparing a difference between each complex argument and its corresponding estimated complex argument to a first predetermined value.
 2. The method of claim 1, wherein the step of using predictor-corrector methodology further comprises altering those estimated complex arguments of the plurality of complex arguments in which the difference between the estimated complex argument and its corresponding complex argument has an absolute value which exceeds the first predetermined value.
 3. The method of claim 2, wherein the altering of the estimated complex arguments is by a second predetermined value.
 4. The method of claim 3, wherein the second predetermined value is 2 times pi. 